Client (computing)

A client is an application or system that accesses a service made available by a server. The server is often (but not always) on another computer system, in which case the client accesses the service by way of a network.[1] The term was first applied to devices that were not capable of running their own stand-alone programs, but could interact with remote computers via a network. These dumb terminals were clients of the time-sharing mainframe computer.

The client–server model is still used today. Client and server can run on the same machine and connect via Unix domain sockets, or other inter-process communication techniques such as shared memory, or named pipes. Using Internet sockets a user may connect to a service operating on a possibly remote system through the Internet protocol suite. Servers set up listening sockets, and clients initiate connections that a server may accept. Web browsers are clients that connect to web servers and retrieve web pages for display. Most people use email clients to retrieve their email from their internet service provider's mail storage servers. Online chat uses a variety of clients, which vary depending on the chat protocol being used. Multiplayer online games may run as Game Clients on each local computer.

Increasingly, existing large client applications are being switched to websites, making the browser a sort of universal client. This avoids the hassle of downloading a large piece of software onto any computer you want to use the application on. An example of this is the rise of webmail.

In personal computers and computer workstations, the difference between client and server operating system is often just a matter of marketing - the server version may contain more operating system components, allow more simultaneous logins, and may be more expensive, while the client version may contain more end-user software.

Contents

Types

Clients are generally classified as either "fat clients", "thin clients", or "hybrid clients".

Local storage Local processing
Fat client Yes Yes
Hybrid client No Yes
Thin client No No

Fat

A fat client, also known as a rich client or thick client, is a client that performs the bulk of any data processing operations itself, and does not necessarily rely on the server. The fat client is most common in the form of a personal computer, as the personal computers or laptops can operate independently.

Programming languages and/or development tools for rich clients typically include Delphi, .NET Framework, Java and Visual Studio.

Thin

A thin client is a minimal sort of client. Thin clients use the resources of the host computer. A thin client's job is generally just to graphically display pictures provided by an application server, which performs the bulk of any required data processing. Programming environments for thin clients include JavaScript/AJAX (client side automation), ASP, JSP, Ruby on Rails, Python's Django, PHP and other (depends on server-side backend and uses HTML pages or rich media like Flash, Flex or Silverlight on client).

Hybrid

A hybrid client is a mixture of the above two client models. Similar to a fat client, it processes locally, but relies on the server for storage data. This approach offers features from both the fat client (multimedia support, high performance) and the thin client (high manageability, flexibility).

Notes and references

  1. ^ Sadoski, Darleen. Client/Server Software Architectures – An Overview, Software Technology Roadmap, 1997-08-02. Retrieved on 2008-09-16.